/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ar.com.arkios.kfconsap.pruebas;

import ar.com.arkios.kfconsap.excepciones.SapComunicationException;
import ar.com.arkios.kfconsap.conexion.SAPConnection;
import com.sap.mw.jco.IFunctionTemplate;
import com.sap.mw.jco.JCO;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Ale
 */
public class Test {
    SAPConnection myConnection;
    //JCO.Repository myRepository;
    JCO.Function myFunction = null;
    JCO.Table Codes = null;
    
    public Test() throws SapComunicationException{
        this.myConnection  = SAPConnection.getInstance();
        this.myConnection.open();
        //this.myRepository = new JCO.Repository("SAPJCorep", this.myConnection.getMConnection());
        try {
            //El parametro indica el nombre de la RFC para este caso usamos como ejemplo...
            this.myFunction = this.createFunction("Z_RFC_READ_ESPECIE");
            this.myConnection.getConnection().execute(this.myFunction);
//            JCO.Structure returnStructure = this.myFunction.getExportParameterList().getStructure("RETURN");
//            if (!(returnStructure.getString("TYPE").equals("") || returnStructure.getString("TYPE").equals("S"))){
//                System.out.println(returnStructure.getString ("MESSAGE"));
//                System.exit (1);
//            }
            //Ahora recorro la estructura de la tabla devuelta. PAso el Nombre de la Tabla T_ESPECIE
            this.Codes = myFunction.getTableParameterList ().getTable("T_ESPECIE");
            System.out.println("ESPECIE"+'\t'+"DENOMINACION"+'\t'+"BULTO STANDAR"+'\t'+"CASTELLANO"+'\t'+"INGLES"+'\t'+"CAST. DESCRIP" + "INGLES DESCRIP");
            int columnas = Codes.getNumColumns();
            
            System.out.println("Cantidad de Columnas : "+columnas);
            System.out.println("Nombres de las Columnas: ");
            for(int i = 0; i < columnas; i++){
                System.out.print(Codes.getName(i)+'\t');
            }
                    
            
            for (int i = 0; i < Codes.getNumRows(); i++){
                Codes.setRow(i);
                //ZESPECIE ZDENOMINAC ZBULSTD ZTEXTO1 ZTEXTO2 ZTZTEXTO3 ZTZTEXTO4
                System.out.println(Codes.getString("ZESPECIE")  +
                            '\t' + Codes.getString("ZDENOMINAC") +
                            '\t' + Codes.getString("ZBULSTD") +
                            '\t' + Codes.getString("ZTEXTO1") +
                            '\t' + Codes.getString("ZTEXTO2") +
                            '\t' + Codes.getString("ZTEXTO3") +
                            '\t' + Codes.getString("ZTEXTO4") 
                            );
                
                System.out.println("Cantidad de Columnas : "+Codes.getNumColumns());
                
            }

        } catch (Exception ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Error en la creacion de la funcion");
        }finally{
            this.myConnection.close();
        }
        

        
    }
    public JCO.Function createFunction(String name) throws Exception{
        try {
            IFunctionTemplate ft = this.myConnection.getMyRepository().getFunctionTemplate (name.toUpperCase ());
            if (ft == null){
                return null;
            }
            return ft.getFunction ();

        }catch (Exception ex) {
            ex.printStackTrace();
            throw new Exception ("Problem retrieving JCO.Function object.");
        }
    }
    
    
    
    

}
